home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Assassins - Ultimate CD Games Collection 4
/
Assassins 4 (1999)(Weird Science).iso
/
kids_corner
/
treasure_search
/
treasure_search.amos
/
treasure_search.amosSourceCode
< prev
Wrap
AMOS Source Code
|
1989-08-12
|
15KB
|
572 lines
' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'
' AMOS Treasure Search
'
' By P.J.Hickman
'
' The First AMOS P.D. Game.........
'
' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Default
Curs Off : Flash Off : Hide On : Screen Close 0
Led Off
Auto View Off
Dir$="Treasure_Search:"
INITIALISE
Get Disc Fonts
Set Font 2
Gr Writing 0
Rem --------------------------------------------------------------------
Rem GLOBAL VARIABLE DECLARATION
Rem --------------------------------------------------------------------
Repeat
TWOPERSONS=0
HINTS=0
HARD=0
THEYDONTWANTANOTHERGO=0
LIMIT=1000
DISTANCE=0
PREV_PIC=0
GOLDX=0
GOLDY=0
XGUESS=0
YGUESS=0
SIZE=14
STGRIDX=168
STGRIDY=30
FINISHGRIDX=STGRIDX+(SIZE*9)
FINISHGRIDY=STGRIDY+(SIZE*9)
PERSON1$="Shipmate"
PERSON2$=PERSON1$
NAME$=PERSON1$
Rem --------------------------------------------------------------------
Rem MAIN PROGRAM
Rem --------------------------------------------------------------------
NTRO
NAMES
GAME_TYPE
If Rnd(1)=1 Then PICCYON_UP[2] Else PICCYON_DOWN[2] : Wait Vbl
T0_POOL[2]
PERSON=1
PICK_TREASURE_LOCATION
Repeat
If PERSON=1 Then NAME$=PERSON1$ Else NAME$=PERSON2$
GUESS
CALCULATE_DISTANCE_FROM_TREASURE
MARK_MOVE
If(Rnd(1)=0 and DISTANCE>0) or(PREV_PIC=4 and DISTANCE>0)
GIVE_FUNNY_PICTURE
Else
If DISTANCE>0
PREV_PIC=4
Load "Raw_Samples/No_Treasure.Abk"
Sam Raw 15,Start(6),23458,8000
Wait 160
Erase 6
End If
End If
If(HINTS and DISTANCE>0) Then GIVE_HELP
If TWOPERSONS=-1 and PERSON=1 Then PERSON=2 Else PERSON=1
If HARD=-1 Then LIMIT=LIMIT-1
Until DISTANCE=0 or LIMIT=0
If LIMIT>=0 and DISTANCE=0 Then FOUND_TREASURE Else MUTINY
ANOTHER_GO
Screen Close 6
Until THEYDONTWANTANOTHERGO=False
End
Rem -------------------------------------------------------------------
Rem INITIAL LOADING SEQUENCE
Rem -------------------------------------------------------------------
Procedure INITIALISE
Rem ---------- LOAD PICTURE AND DISPLAY IT ----------
Load Iff "Pictures/MAINSCR2.IFF",1
If Rnd(1)=1 Then PICCYON_UP[1] Else PICCYON_DOWN[1]
Rem ---------- LOAD SAMPLES AND OTHER BITS ----------
Load Iff "Pictures/MAINSCR3.iff",2
Rem ---------- OPEN "POOL" SCREEN ----------
Screen Open 0,320,200,16,Lowres : Curs Off : Flash Off
Rem ---------- COPY SCREEN 2 TO SCREEN 1 AND REUSE SCREEN 2 ----------
Screen Copy 2,0,0,320,200 To 1,0,0
T0_POOL[1]
Screen Close 2
Load Iff "Pictures/Scrolls.iff",2
Load "Sprites/Feet.abk"
T0_POOL[1]
Music Off
End Proc
Rem -------------------------------------------------------------------
Procedure NTRO
Shared TWOPERSONS,PERSON1$,PERSON2$
T0_POOL[1]
Pen 15 : Paper 6
Clear Key
Ink 15
Text 5,68,"How many people"
Text 6,78,"will help me find"
Text 5,88,"my lost treasure?"
Text 24,105,"Press 1 or 2"
Repeat
KEY
SCAN
SCANPRESS=Param
Until SCANPRESS=1 or SCANPRESS=2
Bell
If SCANPRESS=1 Then TWOPERSONS=0 Else TWOPERSONS=-1
Clear Key
End Proc
Rem -------------------------------------------------------------------
Procedure WHERE_IS_TREASURE
Shared NAME$
CLEAN_TOP_SCROLL
CLEAN_BOTTOM_SCROLL
Screen 0
Pen 1 : Paper 5 : Ink 1
TEMP=Text Length(NAME$)
Text(135-TEMP)/2,24,NAME$
Text 25,42,"Where is"
Text 35,56,"the lost"
Text 30,70,"treasure"
Text 32,84,"hidden?"
Text 38,126,"I think"
Text 34,138,"the lost"
Text 30,150,"treasure"
Text 26,162,"is hidden"
Text 34,174,"at"
Text 55,174,"("
Text 74,174,","
Text 90,174,")"
View
End Proc
Rem -------------------------------------------------------------------
Procedure ALREADY_SEARCHED
Shared NAME$
CLEAN_TOP_SCROLL
CLEAN_BOTTOM_SCROLL
Ink 1
TEMP=Text Length(NAME$)
Text(135-TEMP)/2,20,NAME$
Text 24,36,"This place"
Text 51,50,"has"
Text 36,64,"already"
Text 48,78,"been"
Text 27,92,"searched!!"
View
PRESS_ANY_KEY
End Proc
Rem -------------------------------------------------------------------
Procedure CALCULATE_DISTANCE_FROM_TREASURE
Shared DISTANCE,GOLDX,GOLDY,XGUESS,YGUESS
TEMPX=GOLDX-XGUESS
TEMPY=GOLDY-YGUESS
If TEMPX<0
TEMPX=Abs(TEMPX)
End If
If TEMPY<0
TEMPY=Abs(TEMPY)
End If
If TEMPX>TEMPY Then DISTANCE=TEMPX Else DISTANCE=TEMPY
End Proc
Rem -------------------------------------------------------------------
Procedure MARK_MOVE
Shared DISTANCE,XGUESS,YGUESS,SIZE,STGRIDX,FINISHGRIDY
TEMPX=STGRIDX+(SIZE*XGUESS)
TEMPY=FINISHGRIDY-(SIZE*YGUESS)
If XGUESS>0 or YGUESS>0
Load "Raw_Samples/Feet_Sample.Abk",6
End If
If XGUESS>0 Then WALKX[TEMPX,TEMPY]
If YGUESS>0 Then WALKY[TEMPX,TEMPY]
Bob Off : Wait Vbl
If DISTANCE>4 Then Ink 11 Else If DISTANCE>0 Then Ink 16-DISTANCE Else Ink 15
Bar TEMPX-3,TEMPY-4 To TEMPX+5,TEMPY+4
Ink 1
Box TEMPX-3,TEMPY-4 To TEMPX+5,TEMPY+4
Erase 6
End Proc
Rem -------------------------------------------------------------------
Procedure GIVE_HELP
Shared NAME$,DISTANCE
CLEAN_TOP_SCROLL
CLEAN_BOTTOM_SCROLL
Ink 1
TEMP=Text Length(NAME$)
Text(135-TEMP)/2,16,NAME$
Text 34,30,"You are"
Text 55,42,Str$(DISTANCE)
If DISTANCE=1
Text 22,54,"Kilometre"
Else
Text 19,54,"Kilometres"
End If
Text 21,66,"away from"
Text 53,78,"the"
Text 32,90,"treasure"
View
PRESS_ANY_KEY
End Proc
Rem -------------------------------------------------------------------
Procedure GIVE_FUNNY_PICTURE
Shared PREV_PIC
CLEAN_TOP_SCROLL
CLEAN_BOTTOM_SCROLL
Repeat
TEMP=Rnd(3)+1
Until TEMP<>PREV_PIC
PREV_PIC=TEMP
TEMP2=Rnd(1)
If TEMP=1 Then Load Iff "Pictures/LION.IFF",6
If TEMP=2 Then Load Iff "Pictures/POT.IFF",6
If TEMP=3 Then Load Iff "Pictures/UNDERWATER.IFF",6
If TEMP=4 Then Load Iff "Pictures/Cave.Iff",6
If TEMP2=1
PICCYON_UP[6]
Else
PICCYON_DOWN[6]
End If
If TEMP=3
Load "Raw_Samples/Blub.Abk"
Else
Load "Raw_Samples/No_Treasure.Abk"
End If
Flash 9,"(000,40)(CCC,22)"
View
Timer=0
Repeat
If Timer mod 500=0
If TEMP=3
Sam Raw 15,Start(6),16600,4000
Wait 200
Else
Sam Raw 15,Start(6),23458,8000
Wait 160
End If
End If
Until Inkey$<>""
Flash Off
If Rnd(1) Then PICCYON_UP[0] Else PICCYON_DOWN[0]
Screen Close 6
Erase 6
End Proc
Rem -------------------------------------------------------------------
Procedure MUTINY
Load Iff "Pictures/MUTINY.IFF",6
Load "Raw_Samples/Splash.Abk"
Load "Raw_Samples/Walk_The_Plank.Abk",7
If Rnd(1)=1 Then PICCYON_UP[6] Else PICCYON_DOWN[6]
Sam Raw 15,Start(7),13900,6500
Wait 130
Sam Raw 15,Start(6),12000,5500
Wait 130
Erase 6 : Erase 7
Clear Key
End Proc
Rem -------------------------------------------------------------------
Procedure GUESS
Shared XGUESS,YGUESS,STGRIDX,SIZE,FINISHGRIDY
Repeat
WHERE_IS_TREASURE
Auto View On
Repeat
Pen 9
Print At(8,21);"_";
Pen 8
Repeat
Repeat
Clear Key
KEY
Until Param$<>" "
XGUESS=Asc(Param$)-48
Until XGUESS>=0 and XGUESS<=9
Pen 1
Print At(8,21);Right$(Param$,1);
Bell
Pen 9
Print At(10,21);"_";
Pen 8
Repeat
Repeat
Clear Key
KEY
Until Param$<>" "
YGUESS=Asc(Param$)-48
SCAN
SCANPRESS=Param
Until(YGUESS>=0 and YGUESS<=9) or SCANPRESS=65
Pen 1
If SCANPRESS=65
Print At(10,21);" ";
Else
Print At(10,21);Right$(Str$(YGUESS),1);
Pen 8
Bell
End If
Until SCANPRESS<>65
TEMP=Point(STGRIDX+(SIZE*XGUESS),FINISHGRIDY-(SIZE*YGUESS))
If TEMP>5 Then ALREADY_SEARCHED
Until TEMP<6
Auto View Off
End Proc
Rem -------------------------------------------------------------------
Procedure FOUND_TREASURE
Shared NAME$
Load Iff "Pictures/GETGOLD.IFF",6
Screen 6
Set Rainbow 1,3,16,"(1,1,15)","(1,1,15)",""
For Y=250 To 50 Step -5
Screen Display 6,,Y,,200
Rainbow 1,0,Y,200
View : Wait Vbl
Next
T0_POOL[6]
Load "Raw_Samples/Well_Done.Abk"
Load "Raw_Samples/Squark.Abk",7
Clear Key
Pen 15 : Paper 10
Flash 9,"(000,40)(CCC,22)"
Ink 15
TEMP=Text Length(NAME$)
Text(135-TEMP)/2,54,NAME$
Text 5,63,"You"
Text 40,63,"have"
Text 83,63,"found"
Text 15,71,"my treasure!"
View
Timer=0
Repeat
If Timer mod 600=0
Sam Raw 15,Start(6),30266,8000
Wait 185
Sam Raw 15,Start(7),9000,6400
Wait 65
End If
Until Inkey$<>""
Rainbow Del 1 : View
Erase 6
Erase 7
Clear Key
Flash Off
End Proc
Rem -------------------------------------------------------------------
Procedure WALKX[TEMPX,TEMPY]
Shared STGRIDX,FINISHGRIDY
For LOP=STGRIDX To(TEMPX-14) Step 14
Bob 2,LOP,FINISHGRIDY-10,3 : Wait Vbl : View
Sam Raw 1,Start(6),3900,9000
Wait 15
Bob 3,LOP+6,FINISHGRIDY+2,4 : Wait Vbl : View
Sam Raw 8,Start(6),3900,9000
Wait 15
Next LOP
Bob Off 1
Bob Off 2
End Proc
Rem -------------------------------------------------------------------
Procedure WALKY[TEMPX,TEMPY]
Shared STGRIDX,FINISHGRIDY
For LOP=FINISHGRIDY To TEMPY Step -14
Bob 2,TEMPX-11,LOP,1 : Wait Vbl : View
Sam Raw 1,Start(6),3900,9000
Wait 15
Bob 3,TEMPX+2,LOP-6,2 : Wait Vbl : View
Sam Raw 8,Start(6),3900,9000
Wait 15
Next LOP
Bob Off 1
Bob Off 2
End Proc
Rem -------------------------------------------------------------------
Procedure ANOTHER_GO
Shared THEYDONTWANTANOTHERGO
If Rnd(1)=1 Then PICCYON_UP[1] Else PICCYON_DOWN[1]
T0_POOL[1]
Pen 15 : Paper 6 : Ink 15
Text 14,65,"Would you like"
Text 32,75,"another go?"
Text 21,98,"Press Y or N"
View
YES_NO
THEYDONTWANTANOTHERGO=Param
End Proc
Rem -------------------------------------------------------------------
Procedure NAMES
Shared TWOPERSONS,PERSON1$,PERSON2$
T0_POOL[1]
Pen 15 : Paper 6
If TWOPERSONS=-1
Locate 1,7
Text 27,65,"First Player"
Text 8,75,"Enter your name"
Else
Text 3,65,"Please enter your"
Text 59,75,"name"
End If
CUSTOM_INPUT[10,4,11,15,15]
PERSON1$=Param$
If TWOPERSONS=-1
Cls 6,3,55 To 156,111
Text 20,65,"Second Player"
Text 10,75,"Enter your name"
CUSTOM_INPUT[10,4,11,15,15]
PERSON2$=Param$
End If
End Proc
Rem -------------------------------------------------------------------
Procedure GAME_TYPE
Shared HINTS,HARD,LIMIT
T0_POOL[1]
Pen 15 : Paper 6
Cls 6,3,55 To 156,111
Clear Key
Text 14,65,"Would you like"
Text 31,75,"some hints?"
Text 21,98,"Press Y or N"
YES_NO
Clear Key
HINTS=Param
T0_POOL[1]
Cls 6,3,55 To 156,111
Text 14,65,"Would you like"
Text 20,75,"a hard game?"
Text 21,98,"Press Y or N"
YES_NO
Clear Key
HARD=Param
If HARD=-1
Randomize Timer
T0_POOL[1]
LIMIT=Rnd(8)+4
Cls 6,3,55 To 156,111
Text 32,65,"You have "+Right$(Str$(LIMIT),Len(Str$(LIMIT))-1)
Text 20,75,"moves to find"
Text 28,85,"my treasure"
Text 10,105,"Press Any Key"
View
Wait Key
End If
End Proc
Rem -------------------------------------------------------------------
Procedure PRESS_ANY_KEY
Shared NAME$
Clear Key
CLEAN_BOTTOM_SCROLL
Ink 7
Text 23,134,"Press any"
Text 54,150,"key"
Text 30,166,"shipmate"
Ink 1
View
Flash 7,"(000,40)(EC0,22)"
Wait Key
Bell
Clear Key
CLEAN_BOTTOM_SCROLL
Flash Off
Get Palette 2
End Proc
Rem -------------------------------------------------------------------
Procedure CLEAN_BOTTOM_SCROLL
Cls 5,20,116 To 114,180
End Proc
Rem -------------------------------------------------------------------
Procedure CLEAN_TOP_SCROLL
Cls 5,19,9 To 114,94
End Proc
Rem -------------------------------------------------------------------
Procedure PICK_TREASURE_LOCATION
Shared GOLDX,GOLDY
Randomize Timer
GOLDX=Rnd(9)
GOLDY=Rnd(9)
End Proc
Rem -------------------------------------------------------------------
Procedure YES_NO
Clear Key
Repeat
KEY
SCAN
SCANPRESS=Param
Until SCANPRESS=21 or SCANPRESS=54
Bell
If SCANPRESS=21 Then SCANPRESS=-1 Else SCANPRESS=0
End Proc[SCANPRESS]
Rem -------------------------------------------------------------------
Procedure T0_POOL[SCRNUM]
Screen Hide 0
Screen Copy SCRNUM,0,0,320,200 To 0,0,0
Screen 0
Get Palette SCRNUM
Screen To Front 0
Screen Show 0
Wait Vbl
End Proc
Rem -------------------------------------------------------------------
Procedure PICCYON_UP[SCR]
Screen Display SCR,,350,,Screen Height(SCR)
Screen To Front SCR
For Y=350 To 50 Step -5
Screen Display SCR,,Y,,Screen Height(SCR)
View
Wait Vbl
Next
Screen SCR
End Proc
Rem -------------------------------------------------------------------
Procedure PICCYON_DOWN[SCR]
Screen Display SCR,,-200,,Screen Height(SCR)
Screen To Front SCR
For Y=-200 To 50 Step 5
Screen Display SCR,,Y,,Screen Height(SCR)
View
Wait Vbl
Next
Screen SCR
End Proc
Rem -------------------------------------------------------------------
Procedure CUSTOM_INPUT[INPSIZE,X,Y,TCOL,CURSCOL]
INP$=""
COUNT=0
SCANPRESS=0
X2=X
Locate X,Y
Print Space$(INPSIZE+1);
Clear Key
Repeat
Locate X2,Y
Pen CURSCOL : Print "_" : Pen TCOL
Locate X2,Y
Repeat
KEY
PRESSKEY$=Param$
SCAN
SCANPRESS=Param
Until(Asc(PRESSKEY$)>=65 and Asc(PRESSKEY$)<=90) or SCANPRESS=65 or SCANPRESS=68
If SCANPRESS<>65 and COUNT>0 and SCANPRESS<>68 Then PRESSKEY$=Lower$(PRESSKEY$)
If SCANPRESS<>65 and COUNT<INPSIZE and SCANPRESS<>68 Then Print PRESSKEY$ : INP$=INP$+PRESSKEY$ : COUNT=COUNT+1 : X2=X2+1
If SCANPRESS=65 and X2>X and SCANPRESS<>68 Then COUNT=COUNT-1 : X2=X2-1 : Locate X2,Y : Print " "; : INP$=Left$(INP$,COUNT)
Until SCANPRESS=68 and COUNT>0
Clear Key
Locate X,Y : Print Space$(INPSIZE+1);
End Proc[INP$]
Rem -------------------------------------------------------------------
Procedure KEY
Repeat
PRESSKEY$=Upper$(Inkey$)
Until PRESSKEY$<>""
End Proc[PRESSKEY$]
Rem -------------------------------------------------------------------
Procedure PAUSE[NUM]
For LOP=1 To NUM
Next
End Proc
Rem -------------------------------------------------------------------
Procedure SCAN
SCANPRESS=Scancode
End Proc[SCANPRESS]
Rem -------------------------------------------------------------------
Procedure DISKEY
KEY
TEST$=Param$
SCAN
TEST=Param
Print Asc(Param$);" ";TEST
End Proc